Appendix overview
In this appendix, I report additional exploratory factor analysis (EFA) results that were excluded from the main text of Chapter III, including: (a) unrotated versions of all of the EFA solutions reported in Chapter III; (b) oblimin-transformed (rather than varimax-rotated) versions of all of the EFA solutions reported in Chapter III; (c) additional varimax-rotated EFA solutions not reported in full in Chapter III because I deemd to be redundant with the reported solutions; and (d) EFA solutions for participants in Studies 1c and 4, broken out by which target character a participant assessed first vs. second.
Unrotated solutions
Throughout this dissertation, beginning in Chapter III, I have reported EFA solutions after applying varimax rotation. This rotation, which maximizes the sum of the variances of the squared factor loadings, is intended to make factors more interpretable by producing “simple structure” (Thurstone, 1949). Here, for completeness, I present unrotated EFA solutions for all of the EFAs reported in Chapter III.
Study 1

Study 2

Study 3

Study 4

Varimax-rotated solutions previously deemed redundant
In Chapter III, I focused my interpretation on a subset of the EFA solutions suggested by the three factor retention protocols, excluding those solutions in which additional factors were redundant with the 3-factor (BODY-HEART-MIND) solution. These additional factors tend to explain very little of the shared variance; tend not to be the dominant factor (the factor with the strongest absolute factor loading) for many, if any, mental capacities; and tend to have very weak factor loadings. I include them here for completeness.
Study 1
The factor retention criteria employed in Weisman et al. (2017) suggested retaining 3 factors for all of the studies included in Study 1; see Chapter III. In contrast, parallel analysis suggested retaining 4 factors (instead of 3) for Studies 1b and 1d; minimizing BIC suggested retaining 4 factors (instead of 3) for Study 1c, and 5 factors (instead of 3) for Studies 1a, 1b, and 1d. See Figure A.9.

Study 2
All of the EFA solutions suggested by the three factor retention protocols are reported in full in Chapter III.
Study 3
The factor retention criteria employed in Weisman et al. (2017) suggested retaining 3 factors for all of the age groups included in Study 3; see Chapter III. In contrast, parallel analysis suggested retaining 2 factors (instead of 3) for younger children; and minimizing BIC suggested retaining 4 factors (instead of 3) for adults, and 1 factor (i.e., a “null” solution) for younger children (ages 4-6y). See Figure A.10.

Study 4
All of the EFA solutions suggested by the three factor retention protocols are reported in full in Chapter III, with the exception of the 1-factor (“null”) solution suggested by minimizing BIC for younger children (4-5y). See Figure A.11.

LS0tCnRpdGxlOiAiQXBwZW5kaXggQTogQWRkaXRpb25hbCBFRkEgc29sdXRpb25zIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDQKICAgIHRvY19mbG9hdDogeWVzCmFsd2F5c19hbGxvd19odG1sOiB5ZXMKLS0tCgpgYGB7ciBnbG9iYWxfb3B0aW9ucywgaW5jbHVkZSA9IEZ9CmtuaXRyOjpvcHRzX2NodW5rJHNldChmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMC42NywKICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgPSBGLCBlY2hvID0gRikKYGBgCgpgYGB7cn0KIyAjIGZvciBrbml0dGluZyB0byAuZG9jeAojIG91dHB1dDoKIyAgIHdvcmRfZG9jdW1lbnQ6CiMgICAgIHJlZmVyZW5jZV9kb2N4OiAiLi93b3JkLXN0eWxlcy1yZWZlcmVuY2UuZG9jeCIKIyBhbHdheXNfYWxsb3dfaHRtbDogeWVzCiAgIAojICMgZm9yIGtuaXR0aW5nIHRvIC5uYi5odG1sIAojIG91dHB1dDoKIyAgIGh0bWxfbm90ZWJvb2s6CiMgICAgIHRvYzogeWVzCiMgICAgIHRvY19kZXB0aDogNAojICAgICB0b2NfZmxvYXQ6IHllcwpgYGAKCmBgYHtyfQojIHBhY2thZ2VzCnNvdXJjZSgiLi9zY3JpcHRzL2xpYnJhcmllcy5SIikKCiMgc3VwcG9ydGluZyBmdW5jdGlvbnMKc291cmNlKCIuL3NjcmlwdHMvZWZhX3BhcmFtLlIiKQpzb3VyY2UoIi4vc2NyaXB0cy9tYXhfZmFjdG9yc19lZmEuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL3JldGVuX2Z1bi5SIikKc291cmNlKCIuL3NjcmlwdHMvcGxvdF9mdW4uUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2VmYV9mdW4uUiIpCnNvdXJjZSgiLi9zY3JpcHRzL21zX2Z1bi5SIikKCiMgZGF0YSBzY3JpcHRzCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczEuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczJfYWQuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczJfNzkuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczNfYWQuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczNfNzkuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczNfNDYuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczRfYWQuUiIpCnNvdXJjZSgiLi9zY3JpcHRzL2RhdGFfczRfNDYuUiIpCmBgYAoKYGBge3J9CiMgbG9hZCBpbiBFRkFzIGZyb20gQ2hhcHRlciBJSQojIHN0dWR5IDEKZWZhX3Bhcl9kMWFfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2QxYV9hZCIpCmVmYV9iaWNfZDFhX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kMWFfYWQiKQplZmFfd2RtX2QxYV9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDFhX2FkIikKCmVmYV9wYXJfZDFiX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kMWJfYWQiKQplZmFfYmljX2QxYl9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9iaWNfZDFiX2FkIikKZWZhX3dkbV9kMWJfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2QxYl9hZCIpCgplZmFfcGFyX2QxY19hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDFjX2FkIikKZWZhX2JpY19kMWNfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QxY19hZCIpCmVmYV93ZG1fZDFjX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kMWNfYWQiKQoKZWZhX3Bhcl9kMWRfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2QxZF9hZCIpCmVmYV9iaWNfZDFkX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kMWRfYWQiKQplZmFfd2RtX2QxZF9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDFkX2FkIikKCiMgc3R1ZHkgMgplZmFfcGFyX2QyX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kMl9hZCIpCmVmYV9iaWNfZDJfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QyX2FkIikKZWZhX3dkbV9kMl9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDJfYWQiKQoKZWZhX3Bhcl9kMl83OSA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDJfNzkiKQplZmFfYmljX2QyXzc5IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kMl83OSIpCmVmYV93ZG1fZDJfNzkgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2QyXzc5IikKCiMgc3R1ZHkgMwplZmFfcGFyX2QzX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kM19hZCIpCmVmYV9iaWNfZDNfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QzX2FkIikKZWZhX3dkbV9kM19hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDNfYWQiKQoKZWZhX3Bhcl9kM183OSA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDNfNzkiKQplZmFfYmljX2QzXzc5IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kM183OSIpCmVmYV93ZG1fZDNfNzkgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2QzXzc5IikKCmVmYV9wYXJfZDNfNDYgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2QzXzQ2IikKZWZhX2JpY19kM180NiA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9iaWNfZDNfNDYiKQplZmFfd2RtX2QzXzQ2IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kM180NiIpCgojIHN0dWR5IDQKZWZhX3Bhcl9kNF9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDRfYWQiKQplZmFfYmljX2Q0X2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kNF9hZCIpCmVmYV93ZG1fZDRfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2Q0X2FkIikKCmVmYV9wYXJfZDRfNDYgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2Q0XzQ2IikKZWZhX2JpY19kNF80NiA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9iaWNfZDRfNDYiKQplZmFfd2RtX2Q0XzQ2IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kNF80NiIpCmBgYAoKIyBBcHBlbmRpeCBvdmVydmlldwoKSW4gdGhpcyBhcHBlbmRpeCwgSSByZXBvcnQgYWRkaXRpb25hbCBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMgKEVGQSkgcmVzdWx0cyB0aGF0IHdlcmUgZXhjbHVkZWQgZnJvbSB0aGUgbWFpbiB0ZXh0IG9mIENoYXB0ZXIgSUlJLCBpbmNsdWRpbmc6IChhKSB1bnJvdGF0ZWQgdmVyc2lvbnMgb2YgYWxsIG9mIHRoZSBFRkEgc29sdXRpb25zIHJlcG9ydGVkIGluIENoYXB0ZXIgSUlJOyAoYikgb2JsaW1pbi10cmFuc2Zvcm1lZCAocmF0aGVyIHRoYW4gdmFyaW1heC1yb3RhdGVkKSB2ZXJzaW9ucyBvZiBhbGwgb2YgdGhlIEVGQSBzb2x1dGlvbnMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUk7IChjKSBhZGRpdGlvbmFsIHZhcmltYXgtcm90YXRlZCBFRkEgc29sdXRpb25zIG5vdCByZXBvcnRlZCBpbiBmdWxsIGluIENoYXB0ZXIgSUlJIGJlY2F1c2UgSSBkZWVtZCB0byBiZSByZWR1bmRhbnQgd2l0aCB0aGUgcmVwb3J0ZWQgc29sdXRpb25zOyBhbmQgKGQpIEVGQSBzb2x1dGlvbnMgZm9yIHBhcnRpY2lwYW50cyBpbiBTdHVkaWVzIDFjIGFuZCA0LCBicm9rZW4gb3V0IGJ5IHdoaWNoIHRhcmdldCBjaGFyYWN0ZXIgYSBwYXJ0aWNpcGFudCBhc3Nlc3NlZCBmaXJzdCB2cy4gc2Vjb25kLgoKCiMgVW5yb3RhdGVkIHNvbHV0aW9ucwoKVGhyb3VnaG91dCB0aGlzIGRpc3NlcnRhdGlvbiwgYmVnaW5uaW5nIGluIENoYXB0ZXIgSUlJLCBJIGhhdmUgcmVwb3J0ZWQgRUZBIHNvbHV0aW9ucyBhZnRlciBhcHBseWluZyB2YXJpbWF4IHJvdGF0aW9uLiBUaGlzIHJvdGF0aW9uLCB3aGljaCBtYXhpbWl6ZXMgdGhlIHN1bSBvZiB0aGUgdmFyaWFuY2VzIG9mIHRoZSBzcXVhcmVkIGZhY3RvciBsb2FkaW5ncywgaXMgaW50ZW5kZWQgdG8gbWFrZSBmYWN0b3JzIG1vcmUgaW50ZXJwcmV0YWJsZSBieSBwcm9kdWNpbmcgInNpbXBsZSBzdHJ1Y3R1cmUiIChUaHVyc3RvbmUsIDE5NDkpLiBIZXJlLCBmb3IgY29tcGxldGVuZXNzLCBJIHByZXNlbnQgdW5yb3RhdGVkIEVGQSBzb2x1dGlvbnMgZm9yIGFsbCBvZiB0aGUgRUZBcyByZXBvcnRlZCBpbiBDaGFwdGVyIElJSS4KCmBgYHtyfQojIHJlc2V0IEVGQSBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQsIHRoZW4gc2V0IGNob3NlbiByb3RhdGlvbiB0byBub25lCnNvdXJjZSgiLi9zY3JpcHRzL2VmYV9wYXJhbS5SIikKY2hvc2VuX3JvdCA8LSAibm9uZSIKYGBgCgojIyBTdHVkeSAxCgpgYGB7cn0KZWZhXzNfZDFhX2FkX3Vucm90IDwtIGZhX2Z1bihkMWFfYWRfd2lkZV9pLCAzKQplZmFfM19kMWJfYWRfdW5yb3QgPC0gZmFfZnVuKGQxYl9hZF93aWRlX2ksIDMpCmVmYV8zX2QxY19hZF91bnJvdCA8LSBmYV9mdW4oZDFjX2FkX3dpZGVfaSwgMykKZWZhXzNfZDFkX2FkX3Vucm90IDwtIGZhX2Z1bihkMWRfYWRfd2lkZV9pLCAzKQpgYGAKCmBgYHtyfQojIHN0dWR5IDFhCnBsb3RfZWZhXzNfZDFhX2FkX3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QxYV9hZF91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWEiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxYgpwbG90X2VmYV8zX2QxYl9hZF91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfM19kMWJfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFiIiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWMKcGxvdF9lZmFfM19kMWNfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDFjX2FkX3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYyIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFkCnBsb3RfZWZhXzNfZDFkX2FkX3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QxZF9hZF91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWQiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMy1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS4xIDwtIHBsb3RfZ3JpZChwbG90X2VmYV8zX2QxYV9hZF91bnJvdCwgcGxvdF9lZmFfM19kMWJfYWRfdW5yb3QsIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzNfZDFjX2FkX3Vucm90LCBwbG90X2VmYV8zX2QxZF9hZF91bnJvdCwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSA0LCByZWxfd2lkdGhzID0gYygxLCAxLCAxLCAxLjIpKQoKZmlndXJlQS4xX2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMSwgc3RyX3dyYXAoIkZpZ3VyZSBBLjE6IEZhY3RvciBsb2FkaW5ncyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAxIChhcyByZXBvcnRlZCBpbiBDaGFwdGVyIElJSSksIGJlZm9yZSByb3RhdGlvbi4gQWxsIHJlc3VsdHMgYXJlIGZyb20gVVMgYWR1bHQgc2FtcGxlczsgc2VlIENoYXB0ZXIgSUkgZm9yIG1ldGhvZHMuIChBKSBTdHVkeSAxYS4gKEIpIFN0dWR5IDFiLiAoQykgU3R1ZHkgMWMuIChEKSBTdHVkeSAxZC4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjEwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjEsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA5LCBmaWcuYXNwID0gMC42fQpnZ2RyYXcoZmlndXJlQS4xX2NhcCkKYGBgCgojIyBTdHVkeSAyCgpgYGB7cn0KZWZhXzNfZDJfYWRfdW5yb3QgPC0gZmFfZnVuKGQyX2FkX3dpZGVfaSwgMykKZWZhXzRfZDJfYWRfdW5yb3QgPC0gZmFfZnVuKGQyX2FkX3dpZGVfaSwgNCkKZWZhXzNfZDJfNzlfdW5yb3QgPC0gZmFfZnVuKGQyXzc5X3dpZGVfaSwgMykKYGBgCgpgYGB7cn0KIyBhZHVsdHMKcGxvdF9lZmFfM19kMl9hZF91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfM19kMl9hZF91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiQWR1bHRzIiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDJfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzRfZDJfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIlVucm90YXRlZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIGNoaWxkcmVuCnBsb3RfZWZhXzNfZDJfNzlfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDJfNzlfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkNoaWRscmVuLCA3LTl5Iiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuMiA8LSBwbG90X2dyaWQocGxvdF9lZmFfM19kMl9hZF91bnJvdCwgcGxvdF9lZmFfNF9kMl9hZF91bnJvdCwgCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfM19kMl83OV91bnJvdCwgCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMywgcmVsX3dpZHRocyA9IGMoMSwgMS4yLCAxLjIpKQoKZmlndXJlQS4yX2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMiwgc3RyX3dyYXAoIkZpZ3VyZSBBLjI6IEZhY3RvciBsb2FkaW5ncyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAyIChhcyByZXBvcnRlZCBpbiBDaGFwdGVyIElJSSksIGJlZm9yZSByb3RhdGlvbi4gKEEpIFJlc3VsdHMgZm9yIFVTIGFkdWx0cywgcmV0YWluaW5nIHRocmVlIGZhY3RvcnMuIChCKSBSZXN1bHRzIGZvciBVUyBhZHVsdHMsIHJldGFpbmluZyBmb3VyIGZhY3RvcnMuIChDKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDctOXkuIEEgZmFjdG9yIGxvYWRpbmcgb2YgKzEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1lbnRhbCBjYXBhY2l0eSBhbmQgdW5kZXJseWluZyBjb25zdHJ1Y3Q7IGEgbG9hZGluZyBvZiAtMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgbmVnYXRpdmUgcmVsYXRpb25zaGlwLiIsIDIxMCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS4yLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gOSwgZmlnLmFzcCA9IDAuNn0KZ2dkcmF3KGZpZ3VyZUEuMl9jYXApCmBgYAoKIyMgU3R1ZHkgMwoKYGBge3J9CmVmYV8zX2QzX2FkX3Vucm90IDwtIGZhX2Z1bihkM19hZF93aWRlX2ksIDMpCmVmYV8zX2QzXzc5X3Vucm90IDwtIGZhX2Z1bihkM183OV93aWRlX2ksIDMpCmVmYV8yX2QzXzQ2X3Vucm90IDwtIGZhX2Z1bihkM180Nl93aWRlX2ksIDIpCmVmYV8zX2QzXzQ2X3Vucm90IDwtIGZhX2Z1bihkM180Nl93aWRlX2ksIDMpCmBgYAoKYGBge3J9CiMgYWR1bHRzCnBsb3RfZWZhXzNfZDNfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDNfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIG9sZGVyIGNoaWxkcmVuCnBsb3RfZWZhXzNfZDNfNzlfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDNfNzlfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIk9sZGVyIGNoaWxkcmVuLCA3LTl5Iiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgeW91bmdlciBjaGlsZHJlbgpwbG90X2VmYV8zX2QzXzQ2X3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QzXzQ2X3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJZb3VuZ2VyIGNoaWxkcmVuLCA0LTZ5Iiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzJfZDNfNDZfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzJfZDNfNDZfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIllvdW5nZXIgY2hpbGRyZW4sIDQtNnkiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMi1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjMgPC0gcGxvdF9ncmlkKHBsb3RfZWZhXzNfZDNfYWRfdW5yb3QsIHBsb3RfZWZhXzNfZDNfNzlfdW5yb3QsCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfM19kM180Nl91bnJvdCwgcGxvdF9lZmFfMl9kM180Nl91bnJvdCwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSA0LCByZWxfd2lkdGhzID0gYygxLCAxLCAxLCAxKSkKCmZpZ3VyZUEuM19jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjMsIHN0cl93cmFwKCJGaWd1cmUgQS4zOiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgMyAoYXMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkpLCBiZWZvcmUgcm90YXRpb24uIChBKSBSZXN1bHRzIGZvciBVUyBhZHVsdHMuIChCKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDctOXkuIChDKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDQtNnksIHJldGFpbmluZyB0aHJlZSBmYWN0b3JzLiAoRCkgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA0LTZ5LCByZXRhaW5pbmcgdHdvIGZhY3RvcnMuIEEgZmFjdG9yIGxvYWRpbmcgb2YgKzEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1lbnRhbCBjYXBhY2l0eSBhbmQgdW5kZXJseWluZyBjb25zdHJ1Y3Q7IGEgbG9hZGluZyBvZiAtMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgbmVnYXRpdmUgcmVsYXRpb25zaGlwLiIsIDIxMCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS4zLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gOSwgZmlnLmFzcCA9IDAuNn0KZ2dkcmF3KGZpZ3VyZUEuM19jYXApCmBgYAoKIyMgU3R1ZHkgNAoKYGBge3J9CmVmYV8zX2Q0X2FkX3Vucm90IDwtIGZhX2Z1bihkNF9hZF93aWRlX2ksIDMpCmVmYV8zX2Q0XzQ2X3Vucm90IDwtIGZhX2Z1bihkNF80Nl93aWRlX2ksIDMpCmVmYV80X2Q0XzQ2X3Vucm90IDwtIGZhX2Z1bihkNF80Nl93aWRlX2ksIDQpCmBgYAoKYGBge3J9CiMgYWR1bHRzCnBsb3RfZWZhXzNfZDRfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDRfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHlvdW5nZXIgY2hpbGRyZW4KcGxvdF9lZmFfM19kNF80Nl91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfM19kNF80Nl91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiQ2hpbGRyZW4sIDQtNXkiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNF9kNF80Nl91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfNF9kNF80Nl91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiQ2hpbGRyZW4sIDQtNXkiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjQgPC0gcGxvdF9ncmlkKHBsb3RfZWZhXzNfZDRfYWRfdW5yb3QsIHBsb3RfZWZhXzNfZDRfNDZfdW5yb3QsIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzRfZDRfNDZfdW5yb3QsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMywgcmVsX3dpZHRocyA9IGMoMSwgMSwgMS40KSkKCmZpZ3VyZUEuNF9jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjQsIHN0cl93cmFwKCJGaWd1cmUgQS40OiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgNCAoYXMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkpLCBiZWZvcmUgcm90YXRpb24uIChBKSBSZXN1bHRzIGZvciBVUyBhZHVsdHMuIChCKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDQtNXksIHJldGFpbmluZyB0aHJlZSBmYWN0b3JzLiAoQykgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA0LTV5LCByZXRhaW5pbmcgZm91ciBmYWN0b3JzLiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAyMTApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuNCwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDksIGZpZy5hc3AgPSAwLjZ9CmdnZHJhdyhmaWd1cmVBLjRfY2FwKQpgYGAKCmBgYHtyfQojIHJlc2V0IEVGQSBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQKc291cmNlKCIuL3NjcmlwdHMvZWZhX3BhcmFtLlIiKQpgYGAKCgojIE9ibGltaW4tdHJhbnNmb3JtZWQgc29sdXRpb25zCgpUaHJvdWdob3V0IHRoaXMgZGlzc2VydGF0aW9uLCBJIGhhdmUgb3B0ZWQgdG8gZm9jdXMgb24gdmFyaW1heC1yb3RhdGVkIEVGQSBzb2x1dGlvbnMsIGluIHdoaWNoIGZhY3RvcnMgYXJlIGNvbnN0cmFpbmVkIHRvIGJlIG9ydGhvZ29uYWwgKGkuZS4sIGludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMgYXJlIDApLiBJbiBteSAoYWRtaXR0ZWRseSBhbmVjZG90YWwpIGV4cGVyaWVuY2UsIHRoaXMgcm90YXRpb24gaGFzIHRlbmRlZCB0byBwcm9kdWNlIHNvbHV0aW9ucyB0aGF0IGFyZSBtb3JlIHJlcGxpY2FibGUgd2hlbiBzdHVkaWVzIGFyZSByZXBlYXRlZCBleGFjdGx5LCBtb3JlIHNpbWlsYXIgYWNyb3NzIHZhcmlhbnRzIG9mIHRoZSBlbXBpcmljYWwgYXBwcm9hY2gsIGFuZCBlYXNpZXIgdG8gbWFrZSBmYWN0b3IgcmV0ZW50aW9uIGRlY2lzaW9ucyBhYm91dC4gT3J0aG9nb25hbCBzb2x1dGlvbnMgYWxzbyBsZW5kIHRoZW1zZWx2ZXMgbW9yZSBuYXR1cmFsbHkgdG8gInNjb3JpbmciIGluZGl2aWR1YWwgcGFydGljaXBhbnRzIG9uIGVhY2ggb2YgdGhlIHVuZGVybHlpbmcgY29uc3RydWN0cyBiZWNhdXNlIGZhY3RvcnMgYXJlLCBieSBkZWZpbml0aW9uLCBtYXhpbWFsbHkgZGlzdGluY3QgZnJvbSBvbmUgYW5vdGhlci4gU2luY2UgY29tcGFyaW5nIEVGQSBzb2x1dGlvbnMgYWNyb3NzIHN0dWRpZXMgYW5kIGFnZSBncm91cHMgKENoYXB0ZXIgSUlJKSBhbmQgdXNpbmcgdGhlc2Ugc29sdXRpb25zIHRvICJzY29yZSIgcGFydGljaXBhbnRzIG9uIHRoZWlyIGFzc2Vzc21lbnRzIG9mIHRoZSBtZW50YWwgbGl2ZXMgb2YgZGlmZmVyZW50IHRhcmdldCBjaGFyYWN0ZXJzIChDaGFwdGVyIFYpIGFyZSB0d28gb2YgdGhlIG1haW4gZ29hbHMgb2YgdGhpcyBkaXNzZXJ0YXRpb24sIHZhcmltYXggcm90YXRpb25zIHNlZW1lZCB0byBtZSB0byBiZSBhcHByb3ByaWF0ZSBmb3IgbXkgY3VycmVudCBwdXJwb3Nlcy4gCgpIb3dldmVyLCAib2JsaXF1ZSIgdHJhbnNmb3JtYXRpb25zLCBzdWNoIGFzIHRoZSAib2JsaW1pbiIgdHJhbnNmb3JtYXRpb24sIGFsc28gY29uZmVyIG1hbnkgYWR2YW50YWdlcyBpbiB1c2luZyBFRkEgdG8gaWRlbnRpZnkgY29uc3RydWN0cyBvZiB0aGVvcmV0aWNhbCBpbnRlcmVzdCAoZm9yIGRpc2N1c3Npb24sIHNlZSBSZXZlbGxlLCAyMDE4LCBDaGFwdGVyIDYpLiBJbiBjb250cmFzdCB0byBvcnRob2dvbmFsIHJvdGF0aW9ucywgb2JsaXF1ZSB0cmFuc2Zvcm1hdGlvbnMgYWxsb3cgZmFjdG9ycyB0byBjb3JyZWxhdGUgd2l0aCBlYWNoIG90aGVyLiBJbiByZW1vdmluZyB0aGUgb3J0aGdvbmFsaXR5IGNvbnN0cmFpbnQsIG9ibGlxdWUgdHJhbnNmb3JtYXRpb25zIHRodXMgcmV2ZWFsIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB2YXJpYWJsZXMgKGluIG15IGNhc2UsIG1lbnRhbCBjYXBhY2l0aWVzKSBhbmQgZmFjdG9ycyAoY29uY2VwdHVhbCB1bml0cykgdGhhdCBtaWdodCBiZSBjb25zaWRlcmVkIG1vcmUgIm5hdHVyYWwiOyB0aGV5IG1pZ2h0IGFsc28gcmV2ZWFsIG5ldyBhc3BlY3RzIG9mIHRoZSByZWxhdGlvbnNoaXBzIGFtb25nIGZhY3RvcnMgdGhlbXNlbHZlcyAocGVydGluZW50IHRvIG15IGdvYWxzIGluIENoYXB0ZXIgVikuCgpJbiB0aGUgaW50ZXJlc3Qgb2YgYWRkaW5nIG51YW5jZSB0byBteSBwcmltYXJ5IGRpc2N1c3Npb25zIG9mIHRoZSBjb25jZXB0dWFsIHVuaXRzIGlkZW50aWZpZWQgYnkgRUZBIChDaGF0cGVyIElJSSkgYW5kIHRoZSByZWxhdGlvbnNoaXBzIGFtb25nIHRoZXNlIHVuaXRzIChDaGFwdGVyIFYpLCBoZXJlIEkgcHJlc2VudCBvYmxpbWluLXRyYW5zZm9ybWVkIEVGQSBzb2x1dGlvbnMgZm9yIGFsbCBzdHVkaWVzLgoKYGBge3J9CiMgcmVzZXQgRUZBIHBhcmFtZXRlcnMgdG8gZGVmYXVsdCwgdGhlbiBzZXQgY2hvc2VuIHJvdGF0aW9uIHRvIG9ibGltaW4Kc291cmNlKCIuL3NjcmlwdHMvZWZhX3BhcmFtLlIiKQpjaG9zZW5fcm90IDwtICJvYmxpbWluIgpgYGAKCmBgYHtyfQojIGNoZWNrIHdoZXRoZXIgcm90YXRpb24gaW1wYWN0cyBmYWN0b3IgcmV0ZW50aW9uIChpdCBkb2Vzbid0KQpyZXRlbl9yZXBvcnRfb2JsaW1pbiA8LSBsaXN0KCJTdHVkeSAxYSIgPSBkMWFfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAxYiIgPSBkMWJfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAxYyIgPSBkMWNfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAxZCIgPSBkMWRfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAyOiBBZHVsdHMiID0gZDJfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAyOiBDaGlsZHJlbiAoNy05eSkiID0gZDJfNzlfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAzOiBBZHVsdHMiID0gZDNfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAzOiBPbGRlciBjaGlsZHJlbiAoNy05eSkiID0gZDNfNzlfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAzOiBZb3VuZ2VyIGNoaWxkcmVuICg0LTZ5KSIgPSBkM180Nl93aWRlX2ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0dWR5IDQ6IEFkdWx0cyIgPSBkNF9hZF93aWRlX2ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0dWR5IDQ6IENoaWxkcmVuICg0LTV5KSIgPSBkNF80Nl93aWRlX2kpICU+JQogIHJldGVuX3JlcG9ydF9mdW4oKQpyZXRlbl9yZXBvcnRfb2JsaW1pbgpgYGAKCgojIyBTdHVkeSAxCgpEaWZmZXJlbnQgZmFjdG9yIHJldGVudGlvbiBwcm90b2NvbHMgc3VnZ2VzdGVkIHJldGFpbmluZyBiZXR3ZWVuIDMtNSBmYWN0b3JzIGZvciBTdHVkaWVzIDFhLTFkLiBIZXJlLCBJIHJlcG9ydCAzLSwgNC0sIGFuZCA1LWZhY3RvciBzb2x1dGlvbnMgZm9yIGFsbCBvZiB0aGVzZSBzdHVkaWVzLiBXaGVuIHRoZXNlIGZhY3RvcnMgc2VlbSBzaW1pbGFyIHRvIHRoZSBCT0RZLCBIRUFSVCwgYW5kIE1JTkQgZmFjdG9ycyBwcmVzZW50ZWQgaW4gQ2hhcHRlciBJSUksIEkgaGF2ZSBsYWJlbGVkIHRoZW0gYWNjb3JkaW5nbHkKCiMjIyBFRkEgc29sdXRpb25zCgpgYGB7cn0KZWZhXzNfZDFhX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxYV9hZF93aWRlX2ksIDMpCmVmYV8zX2QxYl9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWJfYWRfd2lkZV9pLCAzKQplZmFfM19kMWNfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFjX2FkX3dpZGVfaSwgMykKZWZhXzNfZDFkX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxZF9hZF93aWRlX2ksIDMpCgplZmFfNF9kMWFfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFhX2FkX3dpZGVfaSwgNCkKZWZhXzRfZDFiX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxYl9hZF93aWRlX2ksIDQpCmVmYV80X2QxY19hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWNfYWRfd2lkZV9pLCA0KQplZmFfNF9kMWRfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFkX2FkX3dpZGVfaSwgNCkKCmVmYV81X2QxYV9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWFfYWRfd2lkZV9pLCA1KQplZmFfNV9kMWJfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFiX2FkX3dpZGVfaSwgNSkKZWZhXzVfZDFjX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxY19hZF93aWRlX2ksIDUpCmVmYV81X2QxZF9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWRfYWRfd2lkZV9pLCA1KQpgYGAKCmBgYHtyfQpmYWN0b3JfbmFtZXNfZWZhXzNfZDFhX2FkX29ibGltaW4gPC0gYygiSEVBUlQiLCAiQk9EWSIsICJNSU5EIikKZmFjdG9yX25hbWVzX2VmYV8zX2QxYl9hZF9vYmxpbWluIDwtIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIpCmZhY3Rvcl9uYW1lc19lZmFfM19kMWNfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCIsICJCT0RZIiwgIk1JTkQiKQpmYWN0b3JfbmFtZXNfZWZhXzNfZDFkX2FkX29ibGltaW4gPC0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikKCmZhY3Rvcl9uYW1lc19lZmFfNF9kMWFfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCIsICJCT0RZIiwgIk1JTkQgKHBlcmNlcHRpb24pIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIChhZ2VuY3kpIikKZmFjdG9yX25hbWVzX2VmYV80X2QxYl9hZF9vYmxpbWluIDwtIGMoIkhFQVJUIChzb2NpYWwpIiwgIk1JTkQiLCAiQk9EWSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQgKGJhc2ljKSIpCmZhY3Rvcl9uYW1lc19lZmFfNF9kMWNfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCIsICJNSU5EIChhZ2VuY3kpIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCT0RZIHZzLiBNSU5EIiwgIk1JTkQgKHBlcmNlcHRpb24pIikKZmFjdG9yX25hbWVzX2VmYV80X2QxZF9hZF9vYmxpbWluIDwtIGMoIkhFQVJUIiwgIk1JTkQiLCAiQk9EWSIsICJGYWN0b3IgNCIpCgpmYWN0b3JfbmFtZXNfZWZhXzVfZDFhX2FkX29ibGltaW4gPC0gYygiSEVBUlQgKHNvY2lhbCkiLCAiQk9EWSB2cy4gTUlORCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQgKGJhc2ljKSIsICJNSU5EIChwZXJjZXB0aW9uKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIChhZ2VuY3kpIikKZmFjdG9yX25hbWVzX2VmYV81X2QxYl9hZF9vYmxpbWluIDwtIGMoIkJPRFkgdnMuIE1JTkQiLCAiSEVBUlQgKHNvY2lhbCkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQgKHBlcmNlcHRpb24pIiwgIkhFQVJUIChiYXNpYykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCAoY29nbml0aW9uKSIpCmZhY3Rvcl9uYW1lc19lZmFfNV9kMWNfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCAoc29jaWFsKSIsICJNSU5EIChhZ2VuY3kpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQgKHBlcmNlcHRpb24pIiwgIk1JTkQgdnMuIEJPRFkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFjdG9yIDUiKQpmYWN0b3JfbmFtZXNfZWZhXzVfZDFkX2FkX29ibGltaW4gPC0gYygiSEVBUlQgKGJhc2ljKSIsICJIRUFSVCAoc29jaWFsKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIChwZXJjZXB0aW9uKSIsICJNSU5EIChhZ2VuY3kpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkgdnMuIE1JTkQiKQpgYGAKCmBgYHtyfQojIHN0dWR5IDFhCnBsb3RfZWZhXzNfZDFhX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzNfZDFhX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kMWFfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWEiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDFhX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzRfZDFhX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNF9kMWFfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWEiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzVfZDFhX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzVfZDFhX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNV9kMWFfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWEiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDUtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWIKcGxvdF9lZmFfM19kMWJfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kMWJfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QxYl9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYiIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNF9kMWJfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNF9kMWJfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QxYl9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYiIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNV9kMWJfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNV9kMWJfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV81X2QxYl9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYiIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNS1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxYwpwbG90X2VmYV8zX2QxY19hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV8zX2QxY19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDFjX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFjIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV80X2QxY19hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV80X2QxY19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDFjX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFjIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV81X2QxY19hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV81X2QxY19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzVfZDFjX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFjIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA1LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFkCnBsb3RfZWZhXzNfZDFkX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzNfZDFkX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kMWRfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWQiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV80X2QxZF9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV80X2QxZF9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDFkX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFkIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNV9kMWRfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNV9kMWRfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV81X2QxZF9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxZCIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNS1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS41IDwtIHBsb3RfZ3JpZChwbG90X2VmYV8zX2QxYV9hZF9vYmxpbWluLCBwbG90X2VmYV8zX2QxYl9hZF9vYmxpbWluLCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV8zX2QxY19hZF9vYmxpbWluLCBwbG90X2VmYV8zX2QxZF9hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzRfZDFhX2FkX29ibGltaW4sIHBsb3RfZWZhXzRfZDFiX2FkX29ibGltaW4sIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzRfZDFjX2FkX29ibGltaW4sIHBsb3RfZWZhXzRfZDFkX2FkX29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfNV9kMWFfYWRfb2JsaW1pbiwgcGxvdF9lZmFfNV9kMWJfYWRfb2JsaW1pbiwgCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfNV9kMWNfYWRfb2JsaW1pbiwgcGxvdF9lZmFfNV9kMWRfYWRfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSA0LCByZWxfd2lkdGhzID0gYygxLCAxLCAxLCAxLjIpKQoKZmlndXJlQS41X2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuNSwgc3RyX3dyYXAoIkZpZ3VyZSBBLjU6IEZhY3RvciBsb2FkaW5ncyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAxIGFmdGVyIG9ibGltaW4gdHJhbnNmb3JtYXRpb24uIEFsbCByZXN1bHRzIGFyZSBmcm9tIFVTIGFkdWx0IHNhbXBsZXM7IHNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgU3R1ZHkgMWEuIChCKSBTdHVkeSAxYi4gKEMpIFN0dWR5IDFjLiAoRCkgU3R1ZHkgMWQuIEluIHRoaXMgYW5kIGFsbCBmaWd1cmVzIHBvcnRyYXlpbmcgZmFjdG9yIGxvYWRpbmdzLCBmYWN0b3JzIGhhdmUgYmVlbiBwbG90dGVkIGluIHRoZSBzYW1lIG9yZGVyIChCT0RZLCBIRUFSVCwgTUlORCksIHdoZW4gYXBwbGljYWJsZSwgdG8gZmFjaWxpdGF0ZSBjb21wYXJpc29uIGFjcm9zcyBzdHVkaWVzLiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAzNjApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuNSwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDE2LCBmaWcuYXNwID0gMS40fQpnZ2RyYXcoZmlndXJlQS41X2NhcCkKYGBgCgojIyMgSW50ZXItZmFjdG9yIGNvcnJlbGF0aW9ucwoKYGBge3J9CklGY29yX3N0dWR5MSA8LSBiaW5kX3Jvd3MoCiAgIyAzLWZhY3RvciBzb2x1dGlvbnMKICBJRmNvcl9mdW4oZWZhXzNfZDFhX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lc19lZmFfM19kMWFfYWRfb2JsaW1pbikgJT4lCiAgICBtdXRhdGUoc3R1ZHkgPSAiU3R1ZHkgMWEiLCBzb2x1dGlvbiA9ICIzLWZhY3RvciBzb2x1dGlvbiIpLAogIElGY29yX2Z1bihlZmFfM19kMWJfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzX2VmYV8zX2QxYl9hZF9vYmxpbWluKSAlPiUKICAgIG11dGF0ZShzdHVkeSA9ICJTdHVkeSAxYiIsIHNvbHV0aW9uID0gIjMtZmFjdG9yIHNvbHV0aW9uIiksCiAgSUZjb3JfZnVuKGVmYV8zX2QxY19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXNfZWZhXzNfZDFjX2FkX29ibGltaW4pICU+JQogICAgbXV0YXRlKHN0dWR5ID0gIlN0dWR5IDFjIiwgc29sdXRpb24gPSAiMy1mYWN0b3Igc29sdXRpb24iKSwKICBJRmNvcl9mdW4oZWZhXzNfZDFkX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lc19lZmFfM19kMWRfYWRfb2JsaW1pbikgJT4lCiAgICBtdXRhdGUoc3R1ZHkgPSAiU3R1ZHkgMWQiLCBzb2x1dGlvbiA9ICIzLWZhY3RvciBzb2x1dGlvbiIpLAoKICAjIDQtZmFjdG9yIHNvbHV0aW9ucwogIElGY29yX2Z1bihlZmFfNF9kMWFfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzX2VmYV80X2QxYV9hZF9vYmxpbWluKSAlPiUKICAgIG11dGF0ZShzdHVkeSA9ICJTdHVkeSAxYSIsIHNvbHV0aW9uID0gIjQtZmFjdG9yIHNvbHV0aW9uIiksCiAgSUZjb3JfZnVuKGVmYV80X2QxYl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXNfZWZhXzRfZDFiX2FkX29ibGltaW4pICU+JQogICAgbXV0YXRlKHN0dWR5ID0gIlN0dWR5IDFiIiwgc29sdXRpb24gPSAiNC1mYWN0b3Igc29sdXRpb24iKSwKICBJRmNvcl9mdW4oZWZhXzRfZDFjX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lc19lZmFfNF9kMWNfYWRfb2JsaW1pbikgJT4lCiAgICBtdXRhdGUoc3R1ZHkgPSAiU3R1ZHkgMWMiLCBzb2x1dGlvbiA9ICI0LWZhY3RvciBzb2x1dGlvbiIpLAogIElGY29yX2Z1bihlZmFfNF9kMWRfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzX2VmYV80X2QxZF9hZF9vYmxpbWluKSAlPiUKICAgIG11dGF0ZShzdHVkeSA9ICJTdHVkeSAxZCIsIHNvbHV0aW9uID0gIjQtZmFjdG9yIHNvbHV0aW9uIiksCgogICMgNS1mYWN0b3Igc29sdXRpb25zCiAgSUZjb3JfZnVuKGVmYV81X2QxYV9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXNfZWZhXzVfZDFhX2FkX29ibGltaW4pICU+JQogICAgbXV0YXRlKHN0dWR5ID0gIlN0dWR5IDFhIiwgc29sdXRpb24gPSAiNS1mYWN0b3Igc29sdXRpb24iKSwKICBJRmNvcl9mdW4oZWZhXzVfZDFiX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lc19lZmFfNV9kMWJfYWRfb2JsaW1pbikgJT4lCiAgICBtdXRhdGUoc3R1ZHkgPSAiU3R1ZHkgMWIiLCBzb2x1dGlvbiA9ICI1LWZhY3RvciBzb2x1dGlvbiIpLAogIElGY29yX2Z1bihlZmFfNV9kMWNfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzX2VmYV81X2QxY19hZF9vYmxpbWluKSAlPiUKICAgIG11dGF0ZShzdHVkeSA9ICJTdHVkeSAxYyIsIHNvbHV0aW9uID0gIjUtZmFjdG9yIHNvbHV0aW9uIiksCiAgSUZjb3JfZnVuKGVmYV81X2QxZF9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXNfZWZhXzVfZDFkX2FkX29ibGltaW4pICU+JQogICAgbXV0YXRlKHN0dWR5ID0gIlN0dWR5IDFkIiwgc29sdXRpb24gPSAiNS1mYWN0b3Igc29sdXRpb24iKSkgJT4lCiAgCiAgIyBhbGwgc3R1ZGllcwogIGZpbHRlcihmYWN0b3IxICE9IGZhY3RvcjIpICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgbXV0YXRlKHVyX2ZhY3RvcjEgPSBjYXNlX3doZW4oZmFjdG9yMSA9PSAiQk9EWS1IRUFSVCIgfiAiQk9EWS1IRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcGwoIkJPRFkiLCBmYWN0b3IxKSB+ICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVwbCgiSEVBUlQiLCBmYWN0b3IxKSB+ICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcGwoIk1JTkQiLCBmYWN0b3IxKSB+ICJNSU5EIiksCiAgICAgICAgIHVyX2ZhY3RvcjEgPSBmYWN0b3IodXJfZmFjdG9yMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJCT0RZIiwgIkJPRFktSEVBUlQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIsICJNSU5EIikpLAogICAgICAgICB1cl9mYWN0b3IxX3BvcyA9IHJlY29kZSh1cl9mYWN0b3IxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAxLCAiQk9EWS1IRUFSVCIgPSAxLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAyLCAiTUlORCIgPSAzKSkgJT4lCiAgbXV0YXRlKHVyX2ZhY3RvcjIgPSBjYXNlX3doZW4oZmFjdG9yMiA9PSAiQk9EWS1IRUFSVCIgfiAiQk9EWS1IRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcGwoIkJPRFkiLCBmYWN0b3IyKSB+ICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVwbCgiSEVBUlQiLCBmYWN0b3IyKSB+ICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcGwoIk1JTkQiLCBmYWN0b3IyKSB+ICJNSU5EIiksCiAgICAgICAgIHVyX2ZhY3RvcjIgPSBmYWN0b3IodXJfZmFjdG9yMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJCT0RZIiwgIkJPRFktSEVBUlQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIsICJNSU5EIikpLAogICAgICAgICB1cl9mYWN0b3IyX3BvcyA9IHJlY29kZSh1cl9mYWN0b3IyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAxLCAiQk9EWS1IRUFSVCIgPSAxLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAyLCAiTUlORCIgPSAzKSkgJT4lCiAgc2VsZWN0KHN0dWR5LCBzb2x1dGlvbiwgdXJfZmFjdG9yMV9wb3MsIHVyX2ZhY3RvcjEsIGZhY3RvcjEsIAogICAgICAgICB1cl9mYWN0b3IyX3BvcywgdXJfZmFjdG9yMiwgZmFjdG9yMiwgY29yKSAlPiUKICBhcnJhbmdlKHN0dWR5LCBzb2x1dGlvbiwgdXJfZmFjdG9yMV9wb3MsIHVyX2ZhY3RvcjJfcG9zKQoKSUZjb3Jfc3R1ZHkxCmBgYAoKYGBge3J9CnBvcyA8LSBwb3NpdGlvbl9qaXR0ZXIod2lkdGggPSAwLjEsIHNlZWQgPSAyKQoKSUZjb3Jfc3R1ZHkxICU+JQogICMgbXV0YXRlKGxhYiA9IGNhc2Vfd2hlbigKICAjICAgKHNvbHV0aW9uID09ICI0LWZhY3RvciBzb2x1dGlvbiIpICYKICAjICAgICAoKHN0dWR5ID09ICJTdHVkeSAyIiAmIHVyX2ZhY3RvciA9PSAiTUlORCIpIHwKICAjICAgICAgICAoc3R1ZHkgPT0gIlN0dWR5IDQiICYgdXJfZmFjdG9yID09ICJCT0RZIikpIH4KICAjICAgICBmYWN0b3IsCiAgIyAgIHVyX2ZhY3RvciA9PSAiQk9EWS1IRUFSVCIgfiBmYWN0b3IsCiAgIyAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKSkgJT4lCiAgIyBhcnJhbmdlKHN0dWR5LCBzYW1wbGUsIHVyX2ZhY3RvcjEsIHVyX2ZhY3RvcjIsIGZhY3RvcjEsIGZhY3RvcjIpICU+JQogIGdncGxvdChhZXMoeCA9IGludGVyYWN0aW9uKHVyX2ZhY3RvcjEsIHVyX2ZhY3RvcjIpLCB5ID0gY29yLCBjb2xvciA9IHN0dWR5KSkgKwogIGZhY2V0X2dyaWQoc29sdXRpb24gfiAuLCBzY2FsZXMgPSAiZnJlZV95IikgKwogICMgZ2VvbV9obGluZShkYXRhID0gZGF0YS5mcmFtZShzb2x1dGlvbiA9IGMoIjItZmFjdG9yIHNvbHV0aW9uIiwKICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzLWZhY3RvciBzb2x1dGlvbiIsCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNC1mYWN0b3Igc29sdXRpb24iKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWwgPSBjKDEvMiwgMS8zLCAxLzQpKSwKICAjICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgY29sb3IgPSBOVUxMLCB5aW50ZXJjZXB0ID0gZXF1YWwpLAogICMgICAgICAgICAgICBzaXplID0gMC4yNSwgbHR5ID0gMiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgIyBnZW9tX3BhdGgoYWVzKGdyb3VwID0gc3R1ZHkpLCBwb3NpdGlvbiA9IHBvcywgYWxwaGEgPSAwLjUsIHNob3cubGVnZW5kID0gRikgKwogIGdlb21fcG9pbnQocG9zaXRpb24gPSBwb3MsIHNob3cubGVnZW5kID0gVCkgKwogICMgZ2VvbV90ZXh0X3JlcGVsKGFlcyhsYWJlbCA9IGxhYiksIHNpemUgPSAzLCBzaG93LmxlZ2VuZCA9IEYsCiAgIyAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3MsIGJveC5wYWRkaW5nID0gMC4zNSwgbmEucm0gPSBULAogICMgICAgICAgICAgICAgICAgIHNlZ21lbnQuYWxwaGEgPSAwLjUpICsKICBzY2FsZV9jb2xvdXJfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBkaXJlY3Rpb24gPSAtMSkgKwogICMgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjEpLCAKICAjICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIkludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMgYWNyb3NzIHN0dWRpZXMsIGFnZSBncm91cHMsIGFuZCBFRkEgc29sdXRpb25zIiwKICAgICAgIHggPSAiRmFjdG9ycyIsIHkgPSAiQ29ycmVsYXRpb24iLCBjb2xvciA9ICJTdHVkeSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpCmBgYAoKCgojIyBTdHVkeSAyCgpgYGB7cn0KZWZhXzNfZDJfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDJfYWRfd2lkZV9pLCAzKQplZmFfNF9kMl9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMl9hZF93aWRlX2ksIDQpCmVmYV8zX2QyXzc5X29ibGltaW4gPC0gZmFfZnVuKGQyXzc5X3dpZGVfaSwgMykKYGBgCgpgYGB7cn0KIyBhZHVsdHMKcGxvdF9lZmFfM19kMl9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QyX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNF9kMl9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKGVmYV80X2QyX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBjaGlsZHJlbgpwbG90X2VmYV8zX2QyXzc5X29ibGltaW4gPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDJfNzlfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiQ2hpZGxyZW4sIDctOXkiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuNiA8LSBwbG90X2dyaWQocGxvdF9lZmFfM19kMl9hZF9vYmxpbWluLCBwbG90X2VmYV80X2QyX2FkX29ibGltaW4sIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzNfZDJfNzlfb2JsaW1pbiwgCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMywgcmVsX3dpZHRocyA9IGMoMSwgMS4yLCAxLjIpKQoKZmlndXJlQS42X2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuNiwgc3RyX3dyYXAoIkZpZ3VyZSBBLjY6IEZhY3RvciBsb2FkaW5ncyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAyIChhcyByZXBvcnRlZCBpbiBDaGFwdGVyIElJSSksIGFmdGVyIG9ibGltaW4gdHJhbnNmb3JtYXRpb24uIChBKSBSZXN1bHRzIGZvciBVUyBhZHVsdHMsIHJldGFpbmluZyB0aHJlZSBmYWN0b3JzLiAoQikgUmVzdWx0cyBmb3IgVVMgYWR1bHRzLCByZXRhaW5pbmcgZm91ciBmYWN0b3JzLiAoQykgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA3LTl5LiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAyMTApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuNiwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDksIGZpZy5hc3AgPSAwLjZ9CmdnZHJhdyhmaWd1cmVBLjZfY2FwKQpgYGAKCiMjIFN0dWR5IDMKCmBgYHtyfQplZmFfM19kM19hZF9vYmxpbWluIDwtIGZhX2Z1bihkM19hZF93aWRlX2ksIDMpCmVmYV8zX2QzXzc5X29ibGltaW4gPC0gZmFfZnVuKGQzXzc5X3dpZGVfaSwgMykKZWZhXzJfZDNfNDZfb2JsaW1pbiA8LSBmYV9mdW4oZDNfNDZfd2lkZV9pLCAyKQplZmFfM19kM180Nl9vYmxpbWluIDwtIGZhX2Z1bihkM180Nl93aWRlX2ksIDMpCmBgYAoKYGBge3J9CiMgYWR1bHRzCnBsb3RfZWZhXzNfZDNfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bihlZmFfM19kM19hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJBZHVsdHMiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgb2xkZXIgY2hpbGRyZW4KcGxvdF9lZmFfM19kM183OV9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QzXzc5X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIk9sZGVyIGNoaWxkcmVuLCA3LTl5Iiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHlvdW5nZXIgY2hpbGRyZW4KcGxvdF9lZmFfM19kM180Nl9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QzXzQ2X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIllvdW5nZXIgY2hpbGRyZW4sIDQtNnkiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzJfZDNfNDZfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bihlZmFfMl9kM180Nl9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJZb3VuZ2VyIGNoaWxkcmVuLCA0LTZ5Iiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAyLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuNyA8LSBwbG90X2dyaWQocGxvdF9lZmFfM19kM19hZF9vYmxpbWluLCBwbG90X2VmYV8zX2QzXzc5X29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfM19kM180Nl9vYmxpbWluLCBwbG90X2VmYV8yX2QzXzQ2X29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gNCwgcmVsX3dpZHRocyA9IGMoMSwgMSwgMSwgMSkpCgpmaWd1cmVBLjdfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS43LCBzdHJfd3JhcCgiRmlndXJlIEEuNzogRmFjdG9yIGxvYWRpbmdzIGZyb20gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIG9mIFN0dWR5IDMgKGFzIHJlcG9ydGVkIGluIENoYXB0ZXIgSUlJKSwgYWZ0ZXIgb2JsaW1pbiB0cmFuc2Zvcm1hdGlvbi4gKEEpIFJlc3VsdHMgZm9yIFVTIGFkdWx0cy4gKEIpIFJlc3VsdHMgZm9yIFVTIGNoaWxkcmVuIGFnZXMgNy05eS4gKEMpIFJlc3VsdHMgZm9yIFVTIGNoaWxkcmVuIGFnZXMgNC02eSwgcmV0YWluaW5nIHRocmVlIGZhY3RvcnMuIChEKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDQtNnksIHJldGFpbmluZyB0d28gZmFjdG9ycy4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjEwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjcsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA5LCBmaWcuYXNwID0gMC42fQpnZ2RyYXcoZmlndXJlQS43X2NhcCkKYGBgCgojIyBTdHVkeSA0CgpgYGB7cn0KZWZhXzNfZDRfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDRfYWRfd2lkZV9pLCAzKQplZmFfM19kNF80Nl9vYmxpbWluIDwtIGZhX2Z1bihkNF80Nl93aWRlX2ksIDMpCmVmYV80X2Q0XzQ2X29ibGltaW4gPC0gZmFfZnVuKGQ0XzQ2X3dpZGVfaSwgNCkKYGBgCgpgYGB7cn0KIyBhZHVsdHMKcGxvdF9lZmFfM19kNF9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKGVmYV8zX2Q0X2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyB5b3VuZ2VyIGNoaWxkcmVuCnBsb3RfZWZhXzNfZDRfNDZfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bihlZmFfM19kNF80Nl9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJDaGlsZHJlbiwgNC01eSIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNF9kNF80Nl9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKGVmYV80X2Q0XzQ2X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIkNoaWxkcmVuLCA0LTV5Iiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuOCA8LSBwbG90X2dyaWQocGxvdF9lZmFfM19kNF9hZF9vYmxpbWluLCBwbG90X2VmYV8zX2Q0XzQ2X29ibGltaW4sIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzRfZDRfNDZfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSAzLCByZWxfd2lkdGhzID0gYygxLCAxLCAxLjQpKQoKZmlndXJlQS44X2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuOCwgc3RyX3dyYXAoIkZpZ3VyZSBBLjg6IEZhY3RvciBsb2FkaW5ncyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSA0IChhcyByZXBvcnRlZCBpbiBDaGFwdGVyIElJSSksIGFmdGVyIG9ibGltaW4gdHJhbnNmb3JtYXRpb24uIChBKSBSZXN1bHRzIGZvciBVUyBhZHVsdHMuIChCKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDQtNXksIHJldGFpbmluZyB0aHJlZSBmYWN0b3JzLiAoQykgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA0LTV5LCByZXRhaW5pbmcgZm91ciBmYWN0b3JzLiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAyMTApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuOCwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDksIGZpZy5hc3AgPSAwLjZ9CmdnZHJhdyhmaWd1cmVBLjhfY2FwKQpgYGAKCmBgYHtyfQojIHJlc2V0IEVGQSBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQKc291cmNlKCIuL3NjcmlwdHMvZWZhX3BhcmFtLlIiKQpgYGAKCgojIFZhcmltYXgtcm90YXRlZCBzb2x1dGlvbnMgcHJldmlvdXNseSBkZWVtZWQgcmVkdW5kYW50CgpJbiBDaGFwdGVyIElJSSwgSSBmb2N1c2VkIG15IGludGVycHJldGF0aW9uIG9uIGEgc3Vic2V0IG9mIHRoZSBFRkEgc29sdXRpb25zIHN1Z2dlc3RlZCBieSB0aGUgdGhyZWUgZmFjdG9yIHJldGVudGlvbiBwcm90b2NvbHMsIGV4Y2x1ZGluZyB0aG9zZSBzb2x1dGlvbnMgaW4gd2hpY2ggYWRkaXRpb25hbCBmYWN0b3JzIHdlcmUgcmVkdW5kYW50IHdpdGggdGhlIDMtZmFjdG9yIChCT0RZLUhFQVJULU1JTkQpIHNvbHV0aW9uLiBUaGVzZSBhZGRpdGlvbmFsIGZhY3RvcnMgdGVuZCB0byBleHBsYWluIHZlcnkgbGl0dGxlIG9mIHRoZSBzaGFyZWQgdmFyaWFuY2U7IHRlbmQgbm90IHRvIGJlIHRoZSBkb21pbmFudCBmYWN0b3IgKHRoZSBmYWN0b3Igd2l0aCB0aGUgc3Ryb25nZXN0IGFic29sdXRlIGZhY3RvciBsb2FkaW5nKSBmb3IgbWFueSwgaWYgYW55LCBtZW50YWwgY2FwYWNpdGllczsgYW5kIHRlbmQgdG8gaGF2ZSB2ZXJ5IHdlYWsgZmFjdG9yIGxvYWRpbmdzLiBJIGluY2x1ZGUgdGhlbSBoZXJlIGZvciBjb21wbGV0ZW5lc3MuCgojIyBTdHVkeSAxCgpUaGUgZmFjdG9yIHJldGVudGlvbiBjcml0ZXJpYSBlbXBsb3llZCBpbiBXZWlzbWFuIGV0IGFsLiAoMjAxNykgc3VnZ2VzdGVkIHJldGFpbmluZyAzIGZhY3RvcnMgZm9yIGFsbCBvZiB0aGUgc3R1ZGllcyBpbmNsdWRlZCBpbiBTdHVkeSAxOyBzZWUgQ2hhcHRlciBJSUkuIEluIGNvbnRyYXN0LCBwYXJhbGxlbCBhbmFseXNpcyBzdWdnZXN0ZWQgcmV0YWluaW5nIDQgZmFjdG9ycyAoaW5zdGVhZCBvZiAzKSBmb3IgU3R1ZGllcyAxYiBhbmQgMWQ7IG1pbmltaXppbmcgQklDIHN1Z2dlc3RlZCByZXRhaW5pbmcgNCBmYWN0b3JzIChpbnN0ZWFkIG9mIDMpIGZvciBTdHVkeSAxYywgYW5kIDUgZmFjdG9ycyAoaW5zdGVhZCBvZiAzKSBmb3IgU3R1ZGllcyAxYSwgMWIsIGFuZCAxZC4gU2VlIEZpZ3VyZSBBLjkuCgpgYGB7cn0KIyBzdHVkeSAxYQpwbG90X2VmYV9iaWNfZDFhX2FkIDwtIGhlYXRtYXBfZnVuKGVmYV9iaWNfZDFhX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWN0b3IgNCIsICJGYWN0b3IgNSIpKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYSIsIHN1YnRpdGxlID0gIjUtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWIKcGxvdF9lZmFfcGFyX2QxYl9hZCA8LSBoZWF0bWFwX2Z1bihlZmFfcGFyX2QxYl9hZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIiwgIkZhY3RvciA0IikpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFiIiwgc3VidGl0bGUgPSAiNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfYmljX2QxYl9hZCA8LSBoZWF0bWFwX2Z1bihlZmFfYmljX2QxYl9hZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFjdG9yIDQiLCAiRmFjdG9yIDUiKSkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWIiLCBzdWJ0aXRsZSA9ICI1LWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxYwpwbG90X2VmYV9iaWNfZDFjX2FkIDwtIGhlYXRtYXBfZnVuKGVmYV9iaWNfZDFjX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiLCAiRmFjdG9yIDQiKSkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWMiLCBzdWJ0aXRsZSA9ICI0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFkCnBsb3RfZWZhX3Bhcl9kMWRfYWQgPC0gaGVhdG1hcF9mdW4oZWZhX3Bhcl9kMWRfYWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIsICJGYWN0b3IgNCIpKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxZCIsIHN1YnRpdGxlID0gIjQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhX2JpY19kMWRfYWQgPC0gaGVhdG1hcF9mdW4oZWZhX2JpY19kMWRfYWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhY3RvciA0IiwgIkZhY3RvciA1IikpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFkIiwgc3VidGl0bGUgPSAiNS1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS45IDwtIHBsb3RfZ3JpZChwbG90X2VmYV9iaWNfZDFhX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV9wYXJfZDFiX2FkLCBwbG90X2VmYV9iaWNfZDFiX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV9iaWNfZDFjX2FkLAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhX3Bhcl9kMWRfYWQsIHBsb3RfZWZhX2JpY19kMWRfYWQsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMywgcmVsX3dpZHRocyA9IGMoMSwgMSwgMS4yKSkKCmZpZ3VyZUEuOV9jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjksIHN0cl93cmFwKCJGaWd1cmUgQS45OiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBhZGRpdGlvbmFsIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAxLCBub3QgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkuIEFsbCByZXN1bHRzIGFyZSBmcm9tIFVTIGFkdWx0IHNhbXBsZXM7IHNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgU3R1ZHkgMWEsIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQy4gKEIpIFN0dWR5IDFiLCBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgcGFyYWxsZWwgYW5hbHlzaXMuIChDKSBTdHVkeSAxYiwgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDLiAoRCkgU3R1ZHkgMWMsIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQy4gKEUpIFN0dWR5IDFkLCBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgcGFyYWxsZWwgYW5hbHlzaXMuIChGKSBTdHVkeSAxZCwgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDLiBJbiB0aGlzIGFuZCBhbGwgZmlndXJlcyBwb3J0cmF5aW5nIGZhY3RvciBsb2FkaW5ncywgZmFjdG9ycyBoYXZlIGJlZW4gcGxvdHRlZCBpbiB0aGUgc2FtZSBvcmRlciAoQk9EWSwgSEVBUlQsIE1JTkQpLCB3aGVuIGFwcGxpY2FibGUsIHRvIGZhY2lsaXRhdGUgY29tcGFyaXNvbiBhY3Jvc3Mgc3R1ZGllcy4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjAwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjksIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA5LCBmaWcuYXNwID0gMX0KZ2dkcmF3KGZpZ3VyZUEuOV9jYXApCmBgYAoKIyMgU3R1ZHkgMgoKQWxsIG9mIHRoZSBFRkEgc29sdXRpb25zIHN1Z2dlc3RlZCBieSB0aGUgdGhyZWUgZmFjdG9yIHJldGVudGlvbiBwcm90b2NvbHMgYXJlIHJlcG9ydGVkIGluIGZ1bGwgaW4gQ2hhcHRlciBJSUkuCgojIyBTdHVkeSAzCgpUaGUgZmFjdG9yIHJldGVudGlvbiBjcml0ZXJpYSBlbXBsb3llZCBpbiBXZWlzbWFuIGV0IGFsLiAoMjAxNykgc3VnZ2VzdGVkIHJldGFpbmluZyAzIGZhY3RvcnMgZm9yIGFsbCBvZiB0aGUgYWdlIGdyb3VwcyBpbmNsdWRlZCBpbiBTdHVkeSAzOyBzZWUgQ2hhcHRlciBJSUkuIEluIGNvbnRyYXN0LCBwYXJhbGxlbCBhbmFseXNpcyBzdWdnZXN0ZWQgcmV0YWluaW5nIDIgZmFjdG9ycyAoaW5zdGVhZCBvZiAzKSBmb3IgeW91bmdlciBjaGlsZHJlbjsgYW5kIG1pbmltaXppbmcgQklDIHN1Z2dlc3RlZCByZXRhaW5pbmcgNCBmYWN0b3JzIChpbnN0ZWFkIG9mIDMpIGZvciBhZHVsdHMsIGFuZCAxIGZhY3RvciAoaS5lLiwgYSAibnVsbCIgc29sdXRpb24pIGZvciB5b3VuZ2VyIGNoaWxkcmVuIChhZ2VzIDQtNnkpLiBTZWUgRmlndXJlIEEuMTAuCgpgYGB7cn0KIyBzdHVkeSAzCnBsb3RfZWZhX2JpY19kM19hZCA8LSBoZWF0bWFwX2Z1bihlZmFfYmljX2QzX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiLCAiRmFjdG9yIDQiKSkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMzogQWR1bHRzIiwgc3VidGl0bGUgPSAiNS1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfYmljX2QzXzQ2IDwtIGhlYXRtYXBfZnVuKGVmYV9iaWNfZDNfNDYsICkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMzogWW91bmdlciBjaGlsZHJlbiwgNC02eSIsIAogICAgICAgc3VidGl0bGUgPSAiMS1mYWN0b3IgKG51bGwpIHNvbHV0aW9uIikgIysKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS4xMCA8LSBwbG90X2dyaWQocGxvdF9lZmFfYmljX2QzX2FkLCBwbG90X2VmYV9iaWNfZDNfNDYsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMiwgcmVsX3dpZHRocyA9IGMoMSwgMSkpCgpmaWd1cmVBLjEwX2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMTAsIHN0cl93cmFwKCJGaWd1cmUgQS4xMDogRmFjdG9yIGxvYWRpbmdzIGZyb20gYWRkaXRpb25hbCBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgMywgbm90IHJlcG9ydGVkIGluIENoYXB0ZXIgSUlJLiBTZWUgQ2hhcHRlciBJSSBmb3IgbWV0aG9kcy4gKEEpIEFkdWx0cywgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDLiAoQikgWW91bmdlciBjaGlsZHJlbiAoNC02eSksICdudWxsJyBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgbWluaW1pemluZyBCSUMuIEluIHRoaXMgYW5kIGFsbCBmaWd1cmVzIHBvcnRyYXlpbmcgZmFjdG9yIGxvYWRpbmdzLCBmYWN0b3JzIGhhdmUgYmVlbiBwbG90dGVkIGluIHRoZSBzYW1lIG9yZGVyIChCT0RZLCBIRUFSVCwgTUlORCksIHdoZW4gYXBwbGljYWJsZSwgdG8gZmFjaWxpdGF0ZSBjb21wYXJpc29uIGFjcm9zcyBzdHVkaWVzLiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAxMTUpLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuMTAsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA1LCBmaWcuYXNwID0gMX0KZ2dkcmF3KGZpZ3VyZUEuMTBfY2FwKQpgYGAKCiMjIFN0dWR5IDQKCkFsbCBvZiB0aGUgRUZBIHNvbHV0aW9ucyBzdWdnZXN0ZWQgYnkgdGhlIHRocmVlIGZhY3RvciByZXRlbnRpb24gcHJvdG9jb2xzIGFyZSByZXBvcnRlZCBpbiBmdWxsIGluIENoYXB0ZXIgSUlJLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIDEtZmFjdG9yICgibnVsbCIpIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQyBmb3IgeW91bmdlciBjaGlsZHJlbiAoNC01eSkuIFNlZSBGaWd1cmUgQS4xMS4KCmBgYHtyfQojIHN0dWR5IDQKcGxvdF9lZmFfYmljX2Q0XzQ2IDwtIGhlYXRtYXBfZnVuKGVmYV9iaWNfZDRfNDYsICkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgNDogWW91bmdlciBjaGlsZHJlbiwgNC01eSIsIAogICAgICAgc3VidGl0bGUgPSAiMS1mYWN0b3IgKG51bGwpIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuMTEgPC0gcGxvdF9lZmFfYmljX2Q0XzQ2CgpmaWd1cmVBLjExX2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMTEsIHN0cl93cmFwKCJGaWd1cmUgQS4xMTogRmFjdG9yIGxvYWRpbmdzIGZyb20gdGhlICdudWxsJyBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgbWluaW1pemluZyBCSUMgZm9yIHlvdW5nZXIgY2hpbGRyZW4gKDQtNXkpIGluIFN0dWR5IDQuIFNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLCBhbmQgQ2hhcHRlciBJSUkgZm9yIG90aGVyIEVGQSBzb2x1dGlvbnMgZm9yIHRoaXMgc3R1ZHkuIEEgZmFjdG9yIGxvYWRpbmcgb2YgKzEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1lbnRhbCBjYXBhY2l0eSBhbmQgdW5kZXJseWluZyBjb25zdHJ1Y3Q7IGEgbG9hZGluZyBvZiAtMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgbmVnYXRpdmUgcmVsYXRpb25zaGlwLiIsIDMwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjExLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gMiwgZmlnLmFzcCA9IDEuOH0KZ2dkcmF3KGZpZ3VyZUEuMTFfY2FwKQpgYGAKCgoKCg==